Telegram Group & Telegram Channel
🖥 В чем преимущества асинхронного кода на C#?

Разберём на примере.
Вот, полностью асинхронный код:
Console.WriteLine("Start Main");
// Запускаем задачу PrintAsync и спокойно идём дальше
var printTask = PrintAsync();
Console.WriteLine("End Main");
// Ждём завершения задачи PrintAsync
await printTask;

async Task PrintDelayAsync()
{
// Ждём 3 секунды, но при этом поток не будет занят
await Task.Delay(3000);
Console.WriteLine("Print");
}

async Task PrintAsync()
{
Console.WriteLine("Start PrintAsync");
// Ждём пока метод отработает, но поток не занят
await PrintDelayAsync();
Console.WriteLine("End PrintAsync");
}


Весь этот код может выполняться даже одним потоком, при этом в моменты ожидания await этот поток освобождается может выполнять какие-то другие асинхронные задачи из вашего кода, если они у вас будут.

Пример параллельного исполнения задач:
Console.WriteLine("Start Main");
await PrintAsync();
Console.WriteLine("End Main");

async Task Print1Async()
{
await Task.Delay(3000);
Console.WriteLine("Print 1");
}

async Task Print2Async()
{
await Task.Delay(2000);
Console.WriteLine("Print 2");
}

async Task Print3Async()
{
await Task.Delay(1000);
Console.WriteLine("Print 3");
}

async Task PrintAsync()
{
Console.WriteLine("Start PrintAsync");
var tasks = new List<Task>() { Print1Async(), Print2Async(), Print3Async() };
await Task.WhenAll(tasks);
Console.WriteLine("End PrintAsync");
}


Вывод:
Start Main
Start PrintAsync
Print 3
Print 2
Print 1
End PrintAsync
End Main


То есть суть в чём — запустились сразу 3 задачи, выполнились они не в том порядке, как были запущены, а где меньше задержка, та раньше и выполнилась. При этом, повторюсь, достаточно одного потока, чтобы выполнять этот код. Что очень существенно, когда речь идёт о сильно загруженных программах типа веб-сервера или какого-то обработчика данных реального времени.

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/csharp_1001_notes/420
Create:
Last Update:

🖥 В чем преимущества асинхронного кода на C#?

Разберём на примере.
Вот, полностью асинхронный код:

Console.WriteLine("Start Main");
// Запускаем задачу PrintAsync и спокойно идём дальше
var printTask = PrintAsync();
Console.WriteLine("End Main");
// Ждём завершения задачи PrintAsync
await printTask;

async Task PrintDelayAsync()
{
// Ждём 3 секунды, но при этом поток не будет занят
await Task.Delay(3000);
Console.WriteLine("Print");
}

async Task PrintAsync()
{
Console.WriteLine("Start PrintAsync");
// Ждём пока метод отработает, но поток не занят
await PrintDelayAsync();
Console.WriteLine("End PrintAsync");
}


Весь этот код может выполняться даже одним потоком, при этом в моменты ожидания await этот поток освобождается может выполнять какие-то другие асинхронные задачи из вашего кода, если они у вас будут.

Пример параллельного исполнения задач:
Console.WriteLine("Start Main");
await PrintAsync();
Console.WriteLine("End Main");

async Task Print1Async()
{
await Task.Delay(3000);
Console.WriteLine("Print 1");
}

async Task Print2Async()
{
await Task.Delay(2000);
Console.WriteLine("Print 2");
}

async Task Print3Async()
{
await Task.Delay(1000);
Console.WriteLine("Print 3");
}

async Task PrintAsync()
{
Console.WriteLine("Start PrintAsync");
var tasks = new List<Task>() { Print1Async(), Print2Async(), Print3Async() };
await Task.WhenAll(tasks);
Console.WriteLine("End PrintAsync");
}


Вывод:
Start Main
Start PrintAsync
Print 3
Print 2
Print 1
End PrintAsync
End Main


То есть суть в чём — запустились сразу 3 задачи, выполнились они не в том порядке, как были запущены, а где меньше задержка, та раньше и выполнилась. При этом, повторюсь, достаточно одного потока, чтобы выполнять этот код. Что очень существенно, когда речь идёт о сильно загруженных программах типа веб-сервера или какого-то обработчика данных реального времени.

@csharp_ci

BY C# 1001 notes




Share with your friend now:
tg-me.com/csharp_1001_notes/420

View MORE
Open in Telegram


C 1001 notes Telegram | DID YOU KNOW?

Date: |

A project of our size needs at least a few hundred million dollars per year to keep going,” Mr. Durov wrote in his public channel on Telegram late last year. “While doing that, we will remain independent and stay true to our values, redefining how a tech company should operate.

What Is Bitcoin?

Bitcoin is a decentralized digital currency that you can buy, sell and exchange directly, without an intermediary like a bank. Bitcoin’s creator, Satoshi Nakamoto, originally described the need for “an electronic payment system based on cryptographic proof instead of trust.” Each and every Bitcoin transaction that’s ever been made exists on a public ledger accessible to everyone, making transactions hard to reverse and difficult to fake. That’s by design: Core to their decentralized nature, Bitcoins aren’t backed by the government or any issuing institution, and there’s nothing to guarantee their value besides the proof baked in the heart of the system. “The reason why it’s worth money is simply because we, as people, decided it has value—same as gold,” says Anton Mozgovoy, co-founder & CEO of digital financial service company Holyheld.

C 1001 notes from in


Telegram C# 1001 notes
FROM USA